package edu.upc.clase.demo.dao.impl;

import edu.upc.clase.demo.dao.PedidoDao;
import edu.upc.clase.demo.entity.Pedido;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Repository;

/**
 *
 * @author PC
 */
@Repository
public class PedidoDaoImpl extends SimpleJdbcDaoSupport implements PedidoDao{

    @Override
    public Integer insertar(Pedido pedido) {
           getJdbcTemplate().update(
                "insert into Pedido (IdLocal,FechaPedido,PrecioTotalPedido,EstadoPedido,NombreCliente,DireccionCliente,TelefonoFijoCliente,AnexoCliente,TelefonoMovilCliente) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
                pedido.getLocal().getIdLocal(), pedido.getFechaPedido(),pedido.getPrecioTotalPedido(),pedido.getEstadoPedido(), pedido.getNombreCliente(), pedido.getDireccionCliente(), pedido.getTelefonoFijoCliente(), pedido.getAnexoCliente(), pedido.getTelefonoMovilCliente());
        return getJdbcTemplate().queryForInt("select last_insert_id()"); //la ultima fila insertada
    }

    @Override
    public List<Pedido> buscarTodos() {
     return getSimpleJdbcTemplate().query( //query te devuelve la lista
                    "Select IdPedido,l.DescripcionLocal,l.DireccionLocal, FechaPedido, PrecioTotalPedido, "
             + "EstadoPedido, NombreCliente, "
             + "DireccionCliente,TelefonoFijoCliente,AnexoCliente,TelefonoMovilCliente From Pedido p "
             + "inner join Local l on p.IdLocal = l.IdLocal",
                    new BeanPropertyRowMapper<Pedido>(Pedido.class));
    }

    @Override
    public List<Pedido> buscarPorNombreCliente(String nombreCliente) {
     try {
            Map<String,String> parametros = new HashMap<String,String>();
            parametros.put("nombre","%"+nombreCliente+"%");
            return getSimpleJdbcTemplate().query(
                    "select * from Pedido where NombreCliente like :nombre",
                    new BeanPropertyRowMapper<Pedido>(Pedido.class),parametros);
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
    
}
